home *** CD-ROM | disk | FTP | other *** search
- 100 'AMORTGW.BAS Copyright 1993 by JN Goodale
- 110 'Date: [93-12-20]
- 111 '
- 112 ' *** NOTE ***
- 113 ' This program is included for the purpose of demonstrating BASICXR.
- 114 ' The program works correctly, but may contain errors if run with
- 115 ' unusual input. The author assumes no responsibility for making
- 116 ' corrections to AMORTGW.BAS!
- 117 '
- 120 'Desc: Amortization of a Loan - Find Amount of Level Payment
- 140 '
- 150 ' P=Principal
- 160 ' R=Interest Rate
- 170 ' I=Interest/Period
- 180 ' N=Number of Payments (Periods)
- 190 ' A=Amount of Level Payment
- 200 '
- 210 '
- 220 '
- 230 ' P * I
- 240 ' A = --------------
- 250 ' 1
- 260 ' 1 - --------
- 270 ' (1+I) ^N Where ^N is "to the Nth Power"
- 280 '
- 290 '.......................................................................
- 300 '
- 310 '
- 320 DIM TEXT$(24)
- 330 ' 0 1 2 3 4 5
- 340 ' 123456789 123456789 123456789 123456789 123456789 123456789
- 350 TEXT$(1) = " [ LOAN AMORTIZATION ]"
- 360 TEXT$(2) = " "
- 370 TEXT$(3) = " Calculate a Level Loan Payment, given:"
- 380 TEXT$(4) = " Loan Principal, nearest full $ (Max 500000)"
- 390 TEXT$(5) = " Interest Rate per Year (Max 30.00), Full %, as in 7.75 = 7.75%"
- 400 TEXT$(6) = " Number of months to Pay (Max 480)"
- 410 TEXT$(7) = " I.E. 30 Years = 360 Months"
- 420 TEXT$(8) = " 4 Years = 48 Months"
- 430 TEXT$(9) = STRING$(79, 220)
- 440 TEXT$(10) = " Enter Amount of PRINCIPAL: (Q-to Quit)"
- 450 TEXT$(11) = " Enter Interest Rate %: "
- 460 TEXT$(12) = " Enter Number of Months: "
- 470 TEXT$(13) = " "
- 480 TEXT$(14) = " The MONTHLY Payment on the above loan would be: $"
- 490 TEXT$(15) = " "
- 500 TEXT$(16) = " V-To View loan schedule"
- 510 TEXT$(17) = " Q-To Quit"
- 520 TEXT$(18) = " "
- 530 TEXT$(19) = " "
- 540 TEXT$(20) = " Choice ? _"
- 550 TEXT$(21) = " "
- 560 TEXT$(22) = " "
- 570 TEXT$(23) = " "
- 580 TEXT$(24) = " "
- 590 ' 123456789 123456789 123456789 123456789 123456789 123456789
- 600 ' 0 1 2 3 4 5
- 610 '
- 620 DIM HEADING$(3)
- 630 HEADING$(1) = " [ Loan Amortization Table ]"
- 640 HEADING$(2) = " Payment # Balance Interest Principal"
- 650 HEADING$(3) = " "
- 660 '
- 670 E0$ = "#######": E2$ = "#######.##": EI$ = "####"
- 720 KEY OFF
- 750 CLS
- 760 FOR I = 1 TO 10: PRINT TEXT$(I): NEXT I
- 770 LOCATE 10, 34: LINE INPUT PRINCIPAL$
- 780 IF (PRINCIPAL$ = "Q") OR (PRINCIPAL$ = "q") THEN GOTO 1270
- 790 N = INSTR(PRINCIPAL$, ".")
- 800 IF N THEN PRINCIPAL$ = LEFT$(PRINCIPAL$, N - 1)
- 810 PRINCIPAL = VAL(PRINCIPAL$)
- 820 IF PRINCIPAL < 1 THEN GOTO 750
- 830 IF PRINCIPAL > 500000! THEN GOTO 750
- 840 LOCATE 11, 1: PRINT TEXT$(11)
- 850 '
- 870 LOCATE 11, 35: LINE INPUT INTERESTRATE$
- 880 INTERESTRATE = VAL(INTERESTRATE$) / 1200
- 890 IF (INTERESTRATE > 0) AND (INTERESTRATE < 30 / 1200) THEN GOTO 940
- 900 LOCATE 11, 35
- 910 PRINT SPACE$(10);
- 920 GOTO 870
- 940 LOCATE 12, 1: PRINT TEXT$(12)
- 950 '
- 970 LOCATE 12, 35: LINE INPUT MONTHS$
- 980 MONTHS% = VAL(MONTHS$) \ 1
- 990 MONTHS = MONTHS%
- 1000 IF (MONTHS% > 0) AND (MONTHS% < 481) THEN GOTO 1070
- 1010 LOCATE 12, 35
- 1020 PRINT SPACE$(10);
- 1030 GOTO 970
- 1050 '
- 1070 X = (1 + INTERESTRATE) ^ MONTHS%
- 1080 Y = 1 / X
- 1090 Z = 1 - Y
- 1100 AMOUNT = (PRINCIPAL * INTERESTRATE) / Z
- 1110 '
- 1130 LOCATE 14, 1
- 1140 FOR I = 14 TO 20: PRINT TEXT$(I): NEXT I
- 1150 LOCATE 14, 57: PRINT USING E2$; (AMOUNT);
- 1160 LOCATE 20, 37
- 1170 '
- 1190 K$ = INKEY$
- 1200 IF K$ = "" THEN GOTO 1190
- 1210 IF K$ = "q" THEN GOTO 1270
- 1220 IF K$ = "Q" THEN GOTO 1270
- 1230 IF K$ = "V" THEN GOSUB 1310
- 1235 IF K$ = "v" THEN GOSUB 1310
- 1240 GOTO 750
- 1250 '
- 1270 CLS
- 1280 END
- 1290 '
- 1310 GOSUB 1560: BALANCE = PRINCIPAL
- 1320 FOR I% = 1 TO MONTHS%
- 1330 INTERESTPAY = BALANCE * INTERESTRATE
- 1340 PRINCIPALPAY = AMOUNT - INTERESTPAY
- 1350 BALANCE = BALANCE - PRINCIPALPAY
- 1360 ROW = ROW + 1
- 1370 IF ROW > 22 THEN GOSUB 1490
- 1380 IF K$ = "Q" THEN RETURN
- 1390 PRINT " ";
- 1400 PRINT USING EI$; (I%); : PRINT " ";
- 1410 PRINT USING E0$; BALANCE; : PRINT " ";
- 1420 PRINT USING E2$; INTERESTPAY; : PRINT " ";
- 1430 PRINT USING E2$; PRINCIPALPAY
- 1440 NEXT I%
- 1450 GOSUB 1490
- 1460 RETURN
- 1470 '
- 1490 PRINT
- 1500 PRINT TAB(20); "Q-To Quit, Any Other Key to Continue ......";
- 1520 K$ = INKEY$
- 1530 IF K$ = "" THEN GOTO 1520
- 1540 IF K$ = "q" THEN K$ = "Q"
- 1560 CLS
- 1570 IF K$ = "Q" THEN RETURN
- 1580 FOR ROW = 1 TO 3: PRINT HEADING$(ROW): NEXT ROW
- 1590 RETURN
-
-